Challenge #74: Build a Factorial Calculator ~nの階乗の標準マクロ~ – Alteryx Weekly Challenge

Challenge #74: Build a Factorial Calculator ~nの階乗の標準マクロ~ – Alteryx Weekly Challenge

Clock Icon2019.01.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。

Alteryx Communityで公開されているWeekly Challengeに挑戦するシリーズ。今回は階乗の計算をする標準マクロの作成に挑戦します。

動作環境

当エントリの執筆には、以下の環境を利用しています。

  • Windows 10 Pro
  • Alteryx Designer 2018.4.5.55178 英語版

Challenge #74: Build a Factorial Calculator

お題

今回挑戦するお題はこちら。

Input側には以下のデータが用意されています。

Output側のデータはこちら。Input側のデータに対して階乗の結果を出力しています。

ワークフローの作成

まずは通常のワークフローで回答を作成していきます。

Generate Rowsツール(Preparation -> Generate Rows)を接続します。Create New Field を使用して、新しく「RowCount」列をDouble型で作成します。Loop ExpressionRowCount + 1Condition ExpressionRowCount <= Number を設定して、「Number」列の数だけ行を作成します。

Multi-Row Formulaツール(Preparation -> Multi-Row Formula)を使用して計算します。Update Existing Field で「RowCount」列を選択し、「Number」列のセルが1つ上と同じ場合に「RowCount」列のセルの1つ上をかけ算した結果を出力します。

式は以下のとおり設定しています。

if [Row-1:Number] = [Number] then [Row-1:RowCount] * [RowCount]
else [RowCount]
endif

Summarizeツール(Transform -> Summarize)を使用して、「Number」列でグループ化し、「RowCount」列の最大値を「Factorial」列に出力します。

結果を確認します。これでワークフローが完成しました。

マクロの作成と使用

ワークフローをマクロ化して使用してみます。

Input側のデータがあるText Inputツール(In/Out -> Text Input)の右クリックメニューを開き、 Convert To Macro Input を選択し、Macro Inputツール(Interface -> Macro Input)に変換します。

また、Browseツール(In/Out -> Browse)を削除し、Macro Outputツール(Interface -> Macro Output)をSummarizeツールに接続します。

これでマクロ化することができました。

View -> Interface Designer の Properties を開き、アイコンを設定します。

マクロを保存し、今度はマクロを使用してみます。新しく開いたワークフローのInput側のデータに、作成したマクロを接続します。

結果を確認して完成です。

最後に

今回はWeekly ChallengeのChallenge #74: Build a Factorial Calculatorに挑戦しました。

サンプルワークフローのご案内

クラスメソッドでご契約のユーザー様向けに、当ブログでご紹介したワークフローを専用ポータルにて公開しております。当エントリでご紹介したワークフローも公開予定ですので、ご参考にしていただきますと幸いです。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.